// 当前页面主要放置路由，方便管理
import router from '@/router'
import store from '@/store'

// 导航守卫
// to 要去哪
// from 从哪里来
// next 放行
router.beforeEach(async(to, from, next) => {
  // 如果有 token
  if (store.getters.token) {
    // 如果要去登录页
    if (to.path === '/login') {
      // 直接跳转首页
      next('/')
    } else {
      // userId 是里面的数据
      // 判断没有数据才获取数据， 获取到数据之后再放行
      if (!store.state.user.userInfo.userId) {
        await store.dispatch('user/getUserInfo')
      }
      // 放行（不阻止）
      next()
    }
  } else {
    // 如果这里直接 next('/login) 就会导致无限循环
    // next('/login')
    // 设置白名单
    const whiteList = ['/login', '/404', '/test']
    if (whiteList.includes(to.path)) {
      // 放行
      next()
    } else {
      next('/login')
    }
  }
})
// router.beforeEach(async(to, from, next) => {
//   if (store.getters.token) {
//     // 已登录
//     if (to.path === '/login') {
//       // 不能去登录页, 要踢到首页
//       next('/')
//     } else {
//       // 已登录, 并正常放行的情况, 需要保证用户数据存在, 再放行
//       if (!store.state.user.userInfo.userId) {
//         await store.dispatch('user/getUserInfo')
//       }
//       next()
//     }
//   } else {
//     // 未登录
//     const whiteList = ['/login', '/404', '/test']
//     if (whiteList.includes(to.path)) {
//       // 白名单可以随便进
//       next()
//     } else {
//       next('/login')
//     }
//   }
// })
